package controller;

import manager.FileManager;
import service.FileDao;
import service.FileMeta;

import java.io.File;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-07-01
 * Time: 9:13
 */

// 业务核心逻辑
public class SearchController {
    private FileManager fileManager = new FileManager(); // Manager

    private FileDao fileDao = new FileDao(); // DAO

    private Thread t = null;

    // 初始化数据库
    public void init(String basePath) {
        fileDao.initDB();

        // 周期性扫描磁盘变化保证尽可能与用户磁盘同步
        t = new Thread(() -> {
            while (!t.isInterrupted()) {
                // 把扫描的耗时操作放到其他线程中, 防止主线程耗时过大, 从而图形化页面卡死无响应
                fileManager.scanAll(new File(basePath));
                try {
                    Thread.sleep(60000); // 周期性扫描时间
                } catch (InterruptedException e) {
                    break; // 防止异常情况,  sleep 唤醒时对 isInterrupted 标志位进行清空, 从而无法停止
                }
            }
        });

        t.start();
        System.out.println("SearchController 初始化完成 ");
    }

    public void shutdown() {
        if (t != null) {

            t.interrupt();
        }
    }

    // 查找方法
    public List<FileMeta> search(String pattern) {
        return fileDao.searchByPattern(pattern);
    }

}
